package com.cuit.mimall.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cuit.mimall.common.R;
import com.cuit.mimall.entity.Category;
import com.cuit.mimall.mapper.CategoryMapper;
import com.cuit.mimall.service.ICategoryService;
import org.springframework.stereotype.Service;

/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author TeaWu
 * @since 2023-07-02
 */
@Service
public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements ICategoryService {

    /**
     * 前台获取所有启用的分类
     *
     * @return R<?> 分类列表
     */
    @Override
    public R<?> getAll() {
        QueryWrapper<Category> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("status", 0);
        return R.ok(baseMapper.selectList(queryWrapper));
    }

    /**
     * 添加分类
     *
     * @param category 分类信息
     * @return R<?>
     */
    @Override
    public R<?> add(Category category) {
        if (super.save(category)) {
            return R.ok("添加成功");
        } else {
            return R.fail("添加失败");
        }
    }

    /**
     * 修改分类
     *
     * @param category 分类信息
     * @return R<?>
     */
    @Override
    public R<?> update(Category category) {
        if (super.updateById(category)) {
            return R.ok("修改成功");
        } else {
            return R.fail("修改失败");
        }
    }

    /**
     * 删除分类
     *
     * @param ids 分类id数组
     * @return R<?>
     */
    @Override
    public R<?> delete(Integer[] ids) {
        try {
            for (Integer id : ids) {
                super.removeById(id);
            }
        } catch (Exception e) {
            return R.fail("删除失败");
        }
        return R.ok("删除成功");
    }


    /**
     * 后台分页查询分类列表
     *
     * @param pageNumber 页码
     * @param pageSize   每页数量
     * @return R<?>
     */
    @Override
    public R<?> getAll(Integer pageNumber, Integer pageSize) {
        Page<Category> page = new Page<>(pageNumber, pageSize);
        super.page(page, null);
        return R.ok("分类获取成功", page);
    }
}
